// pages/cart/cart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cartList: [],
    selectAll: false,
    selectedCount: 0,
    totalPrice: '18.6',
    discount: '16.5',
    token: wx.getStorageSync("token")
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log(this.data.token)
    this.calculateTotal();
  },

  /**
   * 管理按钮点击事件
   */
  onManage() {
    wx.showToast({
      title: '管理功能',
      icon: 'none'
    });
  },

  /**
   * 选择单个商品
   */
  ongetflagFn(cartid, flag) {
    wx.request({
      // 请求地址-接口地址-后端提供的，需要看接口文档
      // 请求的地址，需要在开发者平台，设置一下，才能在小程序中使用-否则会报错
      url: 'http://47.94.6.186:3001/api/cart/selectone',
      method: 'post',

      header: {
        token: this.data.token
      },

      data: { // 不管get或post都用这个传递
        cartid: cartid,
        flag: flag
      },

      // success (res) { /// 脚下留心：存在this指向问题 导致不能用this.setData
      success: res => {
        console.log(res.data)
      },
      fail: err => {
        console.log(err)
      }
    })
  },
  ongetflagallFn(flag) {
    wx.request({
      // 请求地址-接口地址-后端提供的，需要看接口文档
      // 请求的地址，需要在开发者平台，设置一下，才能在小程序中使用-否则会报错
      url: 'http://47.94.6.186:3001/api/cart/selectall',
      method: 'post',

      header: {
        token: this.data.token
      },

      data: { // 不管get或post都用这个传递
        userid: wx.getStorageSync('userid'),
        type: flag
      },

      // success (res) { /// 脚下留心：存在this指向问题 导致不能用this.setData
      success: res => {
        console.log(res.data)
      },
      fail: err => {
        console.log(err)
      }
    })
  },

  onSelectItem(e) {
    console.log(e.currentTarget.dataset.index)
    const index = e.currentTarget.dataset.index;

    const cartList = this.data.cartList;
    this.ongetflagFn(cartList[index].cartid, !cartList[index].flag)


    this.calculateTotal();
  },

  /**
   * 全选/取消全选
   */
  onSelectAll() {
    this.ongetflagallFn(!this.data.selectAll)


    this.calculateTotal();
  },

  /**
   * 数量变化
   */
  onnum(cartid, num) {
    wx.request({
      // 请求地址-接口地址-后端提供的，需要看接口文档
      // 请求的地址，需要在开发者平台，设置一下，才能在小程序中使用-否则会报错
      url: 'http://47.94.6.186:3001/api/cart/updatenum',
      method: 'post',

      header: {
        token: this.data.token
      },

      data: { // 不管get或post都用这个传递
        cartid: cartid,
        num: num
      },

      // success (res) { /// 脚下留心：存在this指向问题 导致不能用this.setData
      success: res => {
        console.log(res.data)
      },
      fail: err => {
        console.log(err)
      }
    })
  },
  onQuantityChange(e) {
    console.log(e.currentTarget.dataset)
    const {
      type,
      index
    } = e.currentTarget.dataset;
    const cartList = this.data.cartList;
    // console.log(cartList)
    if (type === 'plus') {
      this.onnum(cartList[index].cartid, cartList[index].num+1)


    } else if (type === 'minus' && cartList[index].num > 1) {
      this.onnum(cartList[index].cartid, cartList[index].num-1)
    }

    this.calculateTotal();
  },

  /**
   * 计算总价和选中数量
   */

  calculateTotal() {
    wx.request({
      // 请求地址-接口地址-后端提供的，需要看接口文档
      // 请求的地址，需要在开发者平台，设置一下，才能在小程序中使用-否则会报错
      url: 'http://47.94.6.186:3001/api/cart/list',
      method: 'post',
      header: {
        token: this.data.token
      },

      data: { // 不管get或post都用这个传递
        userid: wx.getStorageSync('userid')
      },

      // success (res) { /// 脚下留心：存在this指向问题 导致不能用this.setData
      success: res => {
        console.log(res.data)
        this.setData({
          cartList: res.data.data
        })
        let selectedCount = 0;
        let totalPrice = 0;
        let allSelected = true;

        this.data.cartList.forEach(item => {
          if (item.flag) {
            selectedCount++;
            totalPrice += parseFloat(item.originprice) * item.num;
          } else {
            allSelected = false;
          }
        });

        // 如果没有商品或没有商品被选中，全选状态为false
        if (this.data.cartList.length === 0 || selectedCount === 0) {
          allSelected = false;
        }

        // 只有当所有商品都被选中时，全选状态才为true
        if (selectedCount === this.data.cartList.length && this.data.cartList.length > 0) {
          allSelected = true;
        } else {
          allSelected = false;
        }

        this.setData({
          selectedCount: selectedCount,
          totalPrice: totalPrice.toFixed(1),
          selectAll: allSelected
        });
      },

      fail: err => {
        console.log(err)
      }
    })
  },






  /**
   * 去结算
   */
  onCheckout() {
    const selectedItems = this.data.cartList.filter(item => item.flag);

    if (selectedItems.length === 0) {
      wx.showToast({
        title: '请选择要结算的商品',
        icon: 'none'
      });
      return;
    }

    wx.showToast({
      title: '跳转到结算页面',
      icon: 'success'
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})